package com.cn.wanxi.util;

public class ReadMe {
    /**
     * 2022-3-9
     * 第二阶段任务需求：按照面向对象的方式将所有的数据提取出来，放入Java后台
     * 然后根据servlet+jsp模板渲染数据
     * -----------------------------
     * 识别对象？
     * 什么是对象？我们可以通过什么来呼唤它？标识符
     * 只要是自己定义的名字都可以叫做标识符
     * 标识符：就算名字 ，命名只能用英文，其他都不符合规范
     * 你能够叫得出名字的都可以称为对象
     * ------------------------------------------------
     * 怎么来形容一个对象呢？
     * 电扇：扇叶，颜色，高度，重量。。。。
     * 需要将生活中的对象 抽象到Java里面来？
     * Java中抽象对象用类来表示，
     * 生活中也会由类？
     * 类和对象的关系？
     * 对象是类的具体表示
     * 类是对象的抽象表示（共同点）
     * 如果某些东西存在共同点，我们可以将他们称为一类
     *--------------------------------
     * 将页面的所有对象通过不同的标识符 标识出来，将它放入Java后台的某一个地方
     * web 前端
     * src  后端
     * 对于Java后台我们可能也会放不同的东西，所以也会由无数给包
     * 那么servlet应该有哪些包呢？
     * 1.model    实体层  存放抽象对象的地方
     * 2.dao   数据层  存放具体对象的地方
     * 3.service   逻辑层
     * 4.servlet   页面控制层
     * 5.util  工具层   写工具的地方   公共的地方
     * ------------------------------------------------
     * Java 包的命名规范：
     * 全小写。每一个单词之间用.分开
     * com.cn.wanxi.model
     * 国际。国内，公司。模块
     * 包的层次一般不超过4层
     * -------------------------------------
     * 抽象对象的时候需要注意什么？或者应该根据什么来进行对象的抽象
     * 瀑布开发模型：就算对需求和验收标准都知道的情况下 一步一步开发
     * 1.对象应该和其他对象不能有交集（低耦合高内聚）一个对象只描述一件事情
     * 2.对象的特点应该依赖需求分析E-R图 （需求分析er图针对客户，不能出现英文）
     * --------------------------------
     * 今天任务：
     * 1.画E-R图，然后根据E-R图将model写出来
     * 2.画脑图
     * ------------------------------------------
     * 对象的特点抽象出来以后，我们需要对这些特点进行Java描述
     * 如果定义一个Java对象？
     * Java对象应该包含哪些部分？
     * 属性和方法
     * 所以我们需要对属性和方法进行命名：标识符书写
     * 如果已经知道命名，那么这个名字应该放到那个地方？
     * 所以我们需要给那个名称一个地址：Java里面就是这个地址应该怎么描述？
     * 通过数据类型给定一个容器地址
     * ------------------------------
     * 属性的命名规则：
     * 如果有两个单词，第一个字母小写 后面的每个单词首字母大写，linePhone
     * 类的命名规则：首字母大写CompanyModel
     * 类名：大驼峰式命名
     * 属性：小驼峰式命名
     * 包名：全小写
     * 方法名：小驼峰式
     * 常量：全大写，如果两个单词，以下划线分开 COMPANY_MODEL
     * --------------------------
     * 如果以后我们的属性赋了初始值，那么可以理解成它是一个常量
     * 常量：值不能改变
     * 变量：值可以改变
     * 那么怎么定义常量：需要涉及到修饰符
     * final 最终的，不可改变的
     * --------------------------------------
     * 导航：
     *      能不能将相同的内容装在一个容器里面？数组
     *      数组怎么来表示？
     *      1.静态定义:直接将值赋值给容器
     *      String[]  titles={"网站首页","公司介绍"};
     *      2.动态定义:先定义容器的大小，然后再对其赋值
     *      String[]  titles=new String[6];
     *      titles[0]="网站首页";
     *      titles[1]="公司介绍";
     * --------------------------
     * 数组的赋值？ 需要再方法里面去赋值
     * 那么请问你会写哪些方法？
     * 请问再哪里可以对数组赋值？
     * 方法怎么写？应该包含哪些关键元素？
     * 修饰符 返回值类型 方法名(参数类型 参数名){
     *     ...
     *     方法体
     *     ...
     *     return 返回值;
     * }
     * -------------------------------------------------------
     * 1.命名规范
     * 2.标识符
     * 3.属性
     * 4.常量
     * 5.Java分层：（三层架构：页面控制层servlet服务逻辑层service数据表示层dao）
     * 6.数组的取值赋值
     * -----------------------------------
     * ctrl+d  赋值一行
     * ctrl+z  返回
     * ctrl+c  复制
     * ctrl+v  粘贴
     * ctrl+y  撤销
     * ctrl+s  保证
     * ctrl+a  全选
     * ctrl+x  删除一行
     * ctrl+/  注释
     * alt+enter  帮助
     * ctrl+shift+alt+c  复制包路径 com.cn.wanxi.dao
     * ctrl+alt+L   代码自动对齐
     */
    /**
     * 2022-3-10
     * 一个对象或者Java叫做类，里面应该包含哪些内容？
     * 1.包   将不同的东西或者代码或者功能区分开来
     * 2.类名  一定的名称     最后一个指定当前对象的作用-- 见名知意
     * 3.属性   表示特点 特征  一般是名词
     * 4.方法   表示行为  动作  干事情  一般是动词
     * 5.构造方法  只要我们的名字和类名一致 就叫做构造方法   我们如果想要调用或者得到当前的对象，则需要用构造方法
     *
     * ------------------------
     * Java中的三种注释：
     * 1.//   行注释  一般用于只解释当前行的内容
     * 2./*** /   类注释  一般用于属性，类，方法
     * 3./** /  文本注释   一般用于方法的某几行注释  多行注释
     * -------------------------------------------------
     * 方法的定义？需要哪些内容？方法里面有哪些内容？
     * 这些内容是否可以得到？那我们能不能叫出名字？
     *     private String method(String name) {
     *         System.out.println(11);
     *         return "aa";
     *     }
     * 修饰符 返回值类型 方法名(参数类型 参数名){
     *     ...
     *     方法体
     *     ...
     *     return 返回值;
     * }
     * 如果每页返回值，则返回值类型为void
     * 当我们只有{}我们也叫方法，只不过有一个特殊的名字，叫做代码块
     * 如果有static{}叫做静态代码块
     * --------------------------------------------
     * 我们平时的字符都是用容器来装，String ，但是平时生活中我们还有有其他的类型
     * 比如：数字，字符，字符串，小数，金钱，是否
     * 我们不可能全部用String来装，所以不同的物件，我们应该用不同的容器来装
     * 容器这里指代数据类型
     * Java有哪些数据类型？
     * 基本数据类型：
     * 整型
     *      1.byte
     *      2.short 短整型
     *      3.int  整型
     *      4.long 长整型
     * 浮点型
     *      1.float  单精度
     *      2.double  双精度
     * 字符型
     *      1.char  字符
     * 布尔型
     *      1.boolean
     * 基本类型面试的时候：
     *      1.字节
     *      2.范围
     *      3.默认值
     *      4.封装类
     * -------------------------------------------------------------
     *  数据类型 byte             short           int         long        char        float       double      boolean
     *  0.封装类   Byte            Short           Integer     Long      Character    Float      Double      Boolean
     *  1.字节     1                  2           4              8        2             4          8            1bit
     *  一个字节8个bit位
     *  十进制 1                   5
     *  二进制  0000 0001   0000 0101
     *  二进制和十进制相互转换
     *  2.范围  请问你问的是有符号还是无符号？有无符号是什么意思？是否有正负，有符号有正负，无符号，则只有正数
     *  有符号位 -128~127   1 111 1111     0 111 1111  有符号 最左边的叫做符号位  原码  反码  补码  -2^7  2^7-1
     *  无符号位   0到2^8   0-256   请问0是正数还是负数？
     *  3.默认值
     *  数字的默认数据类型是int
     *  小数的默认数据类型是double
     *  如果用比int小的数据类型去定义，不会报错：原因是什么？自动转型
     *  自动转型是什么意思？什么情况下才会自动转型？强制转型？s= (short) i;
     *  自动装箱和自动拆箱？
     *  八大基本类型的包装类 分别对应哪些？为什么要用包装类？
     *  对于基本类型我们一般只是用作简单容器，只用于存数据，
     *  所以如果还要有其他功能，那么必须对其进行封装：类
     *  当我们将基本类型封装成类   装箱
     *  从封装类到基本类型  拆箱
     * 引用数据类型
     * 类，数组，集合，接口，注解，枚举
     * ----------------------------------------
     * Java 运算符
     * 赋值运算符   =  +=  -+ /= *=
     * 逻辑运算符    && ||
     * 位运算符     & ^  |    << 左移  >> 右移
     * 算术运算符  用于计算 （数学运算符）  +  -  *  /
     * 关系运算符  用于判断   用于布尔值  if  while  for    ==  <=  >=  !=  > <
     * 三元运算符：三目运算符
     * 一元运算符
     * 二元运算符
     * ------------------------------------
     * 逻辑运算符和关系运算符有什么区别？
     * 1.（a==b）&&(c==d)  左右两边都相等的情况下 这个算式才成立
     * 2.a>b
     * --------------------------------------------------------
     * 1.类包含哪些内容？
     * 2.注释
     * 3.方法定义--》代码块---构造方法
     * 4.数据类型
     * 5.类型转换
     * 6.拆箱装箱
     * 7.运算符
     * --------------------------
     * 语法结构：顺序 分支  循环
     * 案例：
     *
     */
    /**
     * 2022-3-11
     * 一般情况下我们的执行顺序 从上到下  顺序
     * 分支：单分支   多分支
     * 单分支   if  else
     * 一般不要超过3个if
     * Java开发规范，无论你们以前学习的知识点是否可以省略{}，我们都要写{}
     * 多分支   switch
     * switch里面是固定的值:switch（）括号里面的可以为什么数据类型？
     *'char, byte, short, int, Character, Byte, Short, Integer, String, or an enum'
     * switch 以后可以用设计模式里面的策略模式和工厂模式进行替换
     * 如果以前做好了的项目，需要添加功能，只要涉及到会修改以前的代码，则标示你的代码不规范，不合格，垃圾
     * 循环：
     *  while(){}   do{} while()之间的区别？
     *  do…while 循环和 while 循环相似，不同的是，do…while 循环至少会执行一次。
     *  while循环和for循环的区别？以及什么情况下用?
     *  for
     *  for(初始化; 布尔表达式; 更新) {
     *     //代码语句
     * }
     * 增强for循环
     * for(声明语句:表达式) 表达式一定是一个数组（集合，map）
     * --------------------------------------
     * 数组赋值一定要考虑下表是否大于当前数组的长度，如果大于会报异常ArrayIndexOutOfBoundsException
     * 数组是固定大小，如果需要一个可以自动扩容的，那么就是集合
     * ArrayBox
     * ------------------------------------------------------
     * 一个完整的属性应该怎么定义？
     * 权限修饰符  特征修饰符 数据类型  变量名（标示符） 赋值运算符  字面量（具体值）
     * private static final String NAME="aaa";
     * 一个完整的方法应该怎么定义？
     * pvivate static String getName(String name) throw Exception {
     *     System.out.println("aa");
     *     return name;
     * }
     * 面试的时候手写一个helloworld？
     * --------------------------------------------------------
     * 权限修饰符--访问修饰符
     * 特征修饰符---非访问修饰符
     * 权限修饰符？权限----就是谁有资格访问该对象的内容？
     * 可以通过对象进行调用，
     * -------------------------------------------
     * 默认不写只能在同一个包里面访问
     * private只能是当前类可以访问
     * protected只能是父与子类可以访问
     * public 所有地方都可以访问
     * --------------------------------
     * 修饰符可以写在那些地方？可以修饰什么？
     * private和protected为什么不能修饰类？
     * 类的主要目的是什么？供别人使用。
     * -----------------------------------------
     * 特征修饰符：
     * static  静态：在内存里面只能出现一次
     * 修饰属性： 方法里面的变量叫做局部变量 不能用static修饰
     *  类下面的变量叫做全局变量  如果用static修饰可以称为类变量 ，静态变量
     *  只能拷贝一次，
     *  修饰方法：
     *      标示如果要调用该方法直接用类名.方法名
     *      独立于对象的静态方法
     * 什么情况下用？
     * 该类使用比较频繁，如果每次都去创建对象，那么会吃内存，所以我们用static
     *
     * -----------------------------------------------------------------------
     * final
     *     修饰类：标示类不能被继承,防止别人使用自身的属性和方法
     *     修饰属性：标示常量
     *     修饰方法：标示不能被重写
     * 重写的意思：就是父类和子类的方法一样，那么父类的方法就没有用了
     * 很多时候我们不想让子类重写父类的方法，则父类的方法用final
     * 怎么验证子类是否重写父类的方法呢？@Override用注解
     *
     * abstract
     *
     *
     * synchronized  线程相关
     * volatile   线程相关
     * native  其他语言相关
     * --------------------------------------
     * 1.数组
     * 2.语法结构
     * 3.权限修饰符
     *  private  protected public 默认不写
     * 4.特征修饰符
     *
     *
     */
    /**
     * 2022-3-14
     * 抽象 abstract
     * 如果代码里面有两个或者两个以上的代码相似，则可能会讲相似的提取出来
     * Test里面通过Persion  不能调用Ainimal里面的属性，因为权限修饰符
     * 默认不写只能再同包里面才能调用
     * 不过通过persion进行调用的时候还是会有一些默认的方法？
     * 这些默认方法来源于Object类，所以这个类被称为所有引用类型的基类
     * 面试的时候：Object里面有哪些方法？
     * Object有构造方法：构造方法的目的就算为了创建一个对象供别人调用
     * 构造方法有没有返回值？----有返回值，判断是否有返回值，最简单的方式看可不可以用一个数据类型去接收
     *
     * 1.equals  判断是否相等  只指内容   注意和==的区别？
     * 2.hashcode 取得hashcode码，可以理解成地址
     * 3.toString() 转换为字符串
     * 4.wait  线程等待
     * 5.clone  克隆
     * 6.notify  notifyall  唤醒线程
     * 7.finalize 容易和final和finally的区别？
     * 8.getClass 通过反射得到当前的类
     * -----------------------------------------
     * 抽象 一般只有抽象类和抽象方法
     * 父类和子类的方法一样，则表示子类重写父类的方法，那么父类的方法就没有执行的必要
     * 抽象方法必须包含再抽象类里面
     * 但是抽象类不一定有抽象方法
     * 如果子类继承一个抽象类，则子类要么实现抽象类的抽象方法
     * 要么子类也是一个抽象类.
     * 父类抽象方法的目的，是扩展此方法，或者子类必须有吃这个方法,只要写了抽象，就表示强制性
     * 抽象类无法创建对象，接口也是
     * @Override 表示判断当前这个方法是否正确的重写了，注解表示解释
     * 如果一个抽象类里面有很多的抽象方法，则需要将所有抽象方法都踢出去，用另一个容器来装
     * 这里就可以用接口来装方法
     * 抽象类和接口的区别？
     * 1.接口其实是一个特殊的抽象类，只是全是抽象方法
     * 2.接口里面默认的权限修饰符是public 默认特征修饰符是abstract
     * 3.抽象方法的权限修饰符不能为private私有。其实 抽象方法默认不写
     * ------------------------------------
     * 一般情况下接口的命名以大写字母I开头；
     * public class Dog3 extends Ainimal implements IListen,IWalk {
     * 类只能单继承,可以多重继承，可以多实现
     * 继承指继承父类，
     * 实现指实现接口
     * -----------------------
     * 接口里面可不可以有属性？可以，
     * 那么可以对属性进行赋值吗？不能赋值
     * 接口里面的属性值为常量
     * 接口里面是否可以写执行代码？可以，必须加default
     * -------------------------------------------------------
     * 如果抽象类里面只是属性，则不必要用抽象，可以理解成父类，
     * 如果某一个类里面全是常量，那么我们也会想方设法的将它抽象出来，用另一个容器接收
     * 这个容器叫枚举
     * 一个类里面默认有一个无参数的构造方法,
     * 如果有其他有参数的构造方法存在，则默认的无参数的构造方法失效
     * 如果想要拿到枚举里面参数的值，那么需要设定一个属性，通过属性去拿值
     * 只要添加新功能或者扩展新功能，都会去原代码里面修改代码，则表示以前的代码不好
     * ------------------------------------------------------------
     * --------------------------------------------
     * 一个完整的方法：
     * 权限修饰符  特征修饰符   返回值类型   方法名  （参数类型  参数名） throw 异常
     * {
     *   //执行体
     *   return  返回值；
     * }
     * 当我们只是想执行某段代码 ，则不需要返回值
     * 当我们想通过执行代码得到某个结果，则需要返回值  返回值类型为void
     * Java 类里面的方法的执行顺序？
     * 类的加载顺序？
     * 1.只要执行该对象，那么静态代码块比代码块先执行：静态代码块》代码块》构造方法
     * 2.先执行静态代码块，如果有多个静态，则按照顺序执行
     * 3.如果加载了类，则表示静态代码块一定会执行，
     *   代码块和构造方法必须通过创建对象的方式才能执行
     *   ------------------------------------
     *   面试时，问什么情况下会执行代码块，什么情况下会执行静态代码块？
     * 类的加载顺序？
     *
     * 总结：
     * 1.Object类
     * 2.抽象
     * 3.接口
     * 4.枚举
     * 5.类的加载顺序
     * --------------------------------------------------------
     * 明天预习：
     * Java的特征？
     * 类于类之间的关系？
     *
     */
    /**
     * 2022-3-15
     * 第二阶段 就算提取数据然后渲染到页面上：servlet+jsp
     * 1.将页面全部转换为jsp
     * 注意：从第二阶段到第三阶段，我们访问页面都是通过后台访问，不能直接访问页面
     * 所以，我们需要给前端用户提供一个访问地址（接口）
     * 2.写一个后台访问的地址HomeServlet
     * 3.发现地址不能生效，因为我们这个注解是别人已经写好的代码，我们要用必须给一个包
     * @WebServlet("/home")属于servlet的包，不是Java自带的，所以需要引入servlet-api.jar
     * 4.继承HttpServlet，重写doGet方法
     * 面试的时候：servlet的生命周期？
     * 5.返回一个jsp页面：通过访问后台地址，然后得到一个返回页面
     * 6.将项目运行起来：需要用到容器tomcat：tomcat就算启动项目的工具
     * 7.idea配置tomcat
     * --------------------------------------------
     * servlet页面转发和重定向的区别？
     * 1.重定向直接跳转到页面
     * 2.页面转发可以将后台数据返回给前端
     * ------------------------------------------------
     * public 不安全，就算随便哪个地方都可以访问：所以以后我们应该根据需要对其属性和方法进行权限设置
     * 所以：我们以后的实体类（model，vo，bo，dto），我们都将属性设置为私有
     * 如果别人需要访问，则给它开放一个接口（public）
     * 所以，以后我们的实体类只能由set和get方法，可能还会有构造方法
     * -------------------------------------------------
     * 面试题：servlet四大作用域？
     * 做第二个访问接口
     * 1.jsp页面
     * 2.后台地址
     * -------------------------------
     * 今天任务：
     * 1.将html修改为jsp：注意头部和顶部引用
     * 2.再后台编写访问前端页面的接口：注意：一个页面对应一个接口
     * 只要代码出现作用和当前类不一致的情况下，我们就要想到代码优化，可能代码不规范
     * 所以，后台的三层架构很关键
     * 页面控制层--和页面相关将数据发送给jsp页面
     * 服务逻辑层--写逻辑代码
     * 数据持久层--存放数据的地方
     * 注意：
     * 1.一个servlet对于一个jsp页面
     * 2.一个对象对于一个service，对应一个dao，对应一个model
     * ---------------------------------------------
     * 第二阶段思路：
     * 1.实体类（mdoel）
     * 2.dao层  将所有数据放入dao层
     * 3.html修改为jsp
     * 4.servlet层创建前端访问后台的接口路径（得到值，将值传入req，返回页面）
     * 5.service 用于封装数据
     */
    /**
     * 2022-3-16
     * 面试？对加班的看法？
     * 正式进入公司时：
     * 1.不要去修改别人的代码
     * 2.熟悉项目
     * 3.最重要：拿到需求文档：就是为了熟悉项目的需求，或者商业模式
     * ------------------------------------
     * 1.对进入下一个公司做准备：熟悉上一个项目：
     * 2.需求文档，技术规范，架构设计，开发规范，经验教训（经过几个项目总结的经验）
     * 3.了解项目的开发模型，开发周期，项目管理工具，团队人数，大小，团队的职责
     * ----------------------------
     * 1.没有上线，有代码，不能，商业机密
     * 2.技术不是最重要的，一定是沟通。思路，
     * 3.用户管理模块，订单模块，新闻模块，产品模块
     * 4.支付模块，消息模块，架构设计（参与）
     * 适当浮夸，能够说出道理来
     * ---------------------------------------
     * 思路清晰？
     * 总 分 总
     * 用修辞手法：比喻，拟人，排比，通感：
     * 抒情：发表感想
     * --------
     * Java面试的时候回答问题：
     * 1.不排斥
     * 2.不反对
     * 3.说出自己的看法
     * -----------------------------
     * 你说得很对，现在大多数公司都是用的springboot，
     * 1.而且对于Java开发人员来说可以节约时间，
     * 2.对于Java基础不是很好的可以更快的上手
     * 3.你们公司用springboot非常好，。。。。。。。。
     * 我们哪个项目用servlet+jsp的主要目的是（可能是）
     * 1.
     * 2.
     * 3.
     * ---------------------------------------------------
     * 速度一定不要太快，一定要稍加思索
     * -------------------------------------------------
     * 你们以后会有周报：日报：月报（）
     * 上报流程：先说结果，再说过程，在说原因
     * --------------------------------------------
     * PPT写得好   赚钱不少
     *-------------------------------------------------------------------------
     * 导航思路：
     * 1.需要对象（NavModel）
     * 2.需要数据(NavDao)
     * 3.将html修改为jsp
     * 4.写页面控制层servlet
     * 5.需要将数据传递到前端jsp:req.setAttribute("navModel", navModel);
     * 6.那么数据从哪个地方来？服务逻辑层 NavService navService=new NavService();
     * 7.接收服务逻辑层的数据 NavModel navModel = navService.getNavModel();
     * 8.服务逻辑层：封装数组
     *
     * -----
     * 前端取值： <c:forEach items="${navModels}" var="model">
     * -------------------------------------
     * 常量不允许赋值：为什么不能赋值？
     * 代码块必须调用对象的时候才执行：必须new 对象()
     * 静态代码块是加载对象的时候就执行
     * --------------------------
     * 产品思路
     * 1.html修改为jsp
     * 2.model
     * 3.dao
     * 4.servlet
     * 5.service
     * 6.jsp  forEach
     * --------------------------
     * BigDecimal是什么意思？为什么要用它？
     * 如果用float和double会丢失精度
     */
    /**
     * 2022-3-17
     * 前端（web）+后端（java）
     * 前端技术：
     * html+css+flex
     * div+子代选择器+（自动换行，上下左右居中，排序）
     * jsp：怎么取得后台的数据：${} c:forEach   c:if   c:when
     * -------------------------------------------------------
     * 后端技术：
     * 三层架构   servlet
     * --------------------------------------------
     * 思路：页面控制层servlet--->服务逻辑层(service)-->数据持久层(dao)--jdbc
     * -----------------------------------------------------------------------
     * 1.创建一个servlet层：HomeServlet.java
     *      1)继承
     *      2）注解（接口，地址）
     *      3）重写servlet的doGet方法 ：什么是重写？什么是重载？重写和重载的区别？
     *      4）servlet的生命周期？init   doService    distroy
     *      5）页面转发和重定向的区别？
     *      6）四大作用域的范围？应用场景 ？大概什么时候用？（暂时不考虑page）
     *      7）key-value的形式？数据库的key-value，对象的key-value，map的key-value等等
     *      8）服务逻辑层代码？为什么要有服务逻辑层？或者为什么封装数据不能直接写到servlet层
     *      9）如果想要调用其他类的方法，则需要创建对象或者通过静态方法进行调用
     *      10）static的用法？如果定义成变量可能会和final同时使用，则变为常量
     *          如果定义方法，则调用通过类.方法名
     *          如果定义代码块，则在加载类的时候会直接执行：静态代码块
     *      11）类的加载顺序？
     *      12）final关键字的用法？1.修饰类？2.修饰方法？3.修饰属性
     *      13）修饰符：权限修饰符和特征修饰符
     *      14）abstract：抽象类：接口，枚举
     *      15）方法：一个完整的方法怎么写？companyService.getCompanyModel();有返回值
     *      16）构造方法是否有返回值？
     *      17）数组？定义的两种方式，1.静态定义 2.动态定义
     *      18）req和resp是什么？请求，响应：前端请求后台，后台响应给前端
     *  --------------------------------------------------------------------
     *  2.创建服务逻辑层CompanyService.java
     *      1)方法的创建：一个完整的方法，只要servlet调用service的方法，必须有返回值
     *      2）这里进行封装返回值数据：需要提前创建一个返回值的空对象
     *      3）对对象的属性进行赋值
     *      4）对象的封装：属性应该全是private，如果别人想要调用，则提供一个接口（get和set方法）
     *      5）什么是变量？什么是属性？什么是字段？什么是字面量？
     *      6）数据来源于dao层
     *      7）我们的类里面以后永远不要有常量：应该将常量单独写一个类进行调用（配置类）
     *      8）如果返回的是数组，则需要创建一个动态的空数组：数组的大小应该由数据持久层的数组长度决定
     *      9）数组的取值赋值用到for循环进行遍历
     *      10）Java的语法结构：顺序，分支，循环
     *      11）分支：单分支if else 多分支switch
     *      12）以后少用else和switch，因为很少用，会被工厂模式，策略模式等设计模式代替
     *      13）分支数组里面的对象时，每次应该是一个新对象，所以，应该在for循环里面进行对象创建
     *      14）注意问题：最后一句话一定需要将对象加入到数组： navModels[i] = navModel;
     *      15）循环：while   do-while   fori   foreach
     *      16）while   do-while的区别？fori   foreach区别？
     *      17）一般情况下不知道循环多少次的时候用while，固定循环次数用for循环
     *      18）数据转换：new BigDecimal(ProductDao.PRICE_FOR_PRODUCT_PAGE[i])
     *      19）数据转换：强制转换，隐私转换，自动转换，向上转型，向下转型
     *      20）for循环如果条件语句是一个表达式，则需要将表达式提取到变量，否则会增加内存负担
     *      21）运算符：算术运算符，逻辑运算符，条件运算符，三元运算符（if else的变种）
     *      22）优先级：
     *      23）一个类里面如果做了几件事情，那么就应该创建不同的方法
     * 3.数据持久层：dao层
     *      1）常量
     *      2）数组的定义
     * 4.实体层：model层
     *      1）属性用私有
     *      2）提供set和get接口
     * 5.工具层：util层
     *      1）将公共的类或者方法写入工具层（其他层都可以调用）
     *      2）如果只是当前包里面调用，那么没必要写入工具层，直接用默认不写修饰符进行修饰
     * ----------------------------------------------------------------------------------
     *
     *
     *
     *
     *
     *
     */
}
